home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d12 / jaz_clib.arc / JZGETMEM.C < prev    next >
Text File  |  1989-04-09  |  1KB  |  36 lines

  1. /*
  2. ┌────────────────────────────────────────────────────────────────────────────┐
  3. │jzgetmem                                                                    │
  4. │Return the segment value of a pointer to free memory.                       │
  5. │The returned value should be orred into a far pointer like so:              │
  6. │char far *w;                                                                │
  7. │                                                                            │
  8. │w = (char far*) ((long) seg_value << 16);                                   │
  9. │                                                                            │
  10. │ (C) JazSoft Software by Jack A. Zucker (301) 794-5950                      │
  11. └────────────────────────────────────────────────────────────────────────────┘
  12. */
  13.  
  14. jzgetmem(fbytes , fseg)
  15. unsigned int fbytes;
  16. int *fseg;
  17. {
  18.   TREG wreg;
  19.  
  20.   wreg.h.ah = 0x48;            /* dos allocate memory     */
  21.   if (fbytes % 16) wreg.x.bx = fbytes / 16 + 1;
  22.   else wreg.x.bx = fbytes / 16;     /* convert to paragraphs */
  23.   msdos(&wreg);
  24.  
  25.   if (wreg.x.flags & 1) {        /* can't allocate memory */
  26.     *fseg = wreg.x.bx;            /* return paras free     */
  27.     return(-1);
  28.   }
  29.   else {
  30.     *fseg = wreg.x.ax;            /* return seg:0 to alloc mem */
  31.     return(0);
  32.   }
  33. }
  34.  
  35.  
  36.